Philosophenproblem

Philosophenproblem
Philosophenproblem,
 
klassisches Problem zur Erläuterung nebenläufiger Prozesse und damit zusammenhängender Begriffe wie Verklemmung, Semaphor usw. (Nebenläufigkeit). Zugleich verdeutlicht das Problem die Unüberschaubarkeit bereits sehr einfacher nebenläufiger Strukturen.
 
Fünf Philosophen sitzen rund um einen Tisch. Vor jedem Philosophen steht ein Teller mit einer Portion Spaghetti und zwischen jedem Teller liegt eine Gabel. Jeder Philosoph beschäftigt sich nun eine Weile mit Nachdenken, bis er hungrig wird und zum Essen schreiten will. Man geht davon aus, dass ein Philosoph zum Essen zwei Gabeln benötigt, nämlich die links und rechts neben seinem Teller liegenden. Offenbar können also höchstens zwei Philosophen gleichzeitig essen, da nicht mehr als fünf Gabeln zur Verfügung stehen.
 
Möchte man die vorhandene Situation und das Verhalten der Philosophen in ein Programm umsetzen, muss man berücksichtigen, dass der von zwei benachbarten Philosophen unternommene gleichzeitige Zugriff auf eine Gabel einen Konflikt auslösen würde. Dieser Konflikt muss durch Kontrollvariablen vermieden werden (programmtechnisch durch Semaphore). Sie kennzeichnen, ob eine Gabel bereits belegt ist oder nicht; das Programm gibt nur eine gemäß der Kontrollvariablen freie Gabel an einen Philosophen heraus, bei absolut gleichzeitigem Zugriff auf eine freie Gabel wird eine Reihenfolge vereinbart.
 
Wenn das Programm die Lösung von Konflikten beherrscht, kann es dennoch zu Verklemmungen kommen. Werden z. B. alle Philosophen gleichzeitig hungrig und ergreifen zunächst jeweils ihre linke Gabel, kann kein Philosoph mit dem Essen beginnen oder sonst noch irgendeine Tätigkeit ausführen. Um diese Situation zu verhindern, müssen weitere Kontrollvariablen eingeführt werden. Diese kennzeichnen, ob ein Philosoph denkt, isst oder hungrig zu den Gabeln greifen möchte. Durch einige Abfragen kann nun gesichert werden, dass zwei benachbarte Philosophen sich nicht gleichzeitig auf das Essen vorbereiten.
 
Auch eine Lösung, die alle Verklemmungen beseitigt, muss nicht unbedingt befriedigend sein. So kann das sog. Fairnessproblem auftauchen, dass nämlich ein Philosoph durch das Verhalten seiner beiden Nachbarn vom Essen abgehalten wird und verhungert. Dieser Fall tritt z. B. ein, wenn beide Nachbarn niemals gleichzeitig nachdenken, sondern immer abwechselnd denken und essen. Die Beseitigung dieser Schwierigkeiten ist nicht unkompliziert und erfordert erhebliche Verbesserungen des Algorithmus.

Universal-Lexikon. 2012.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Philosophenproblem — Aufbau des Philosophenproblems Beim Philosophenproblem (engl. Dining Philosophers Problem) handelt es sich um ein Fallbeispiel aus dem Bereich der Theoretischen Informatik. Damit soll das Problem der Nebenläufigkeit erklärt werden und die Gefahr… …   Deutsch Wikipedia

  • Dead Lock — Beispiel für einen Deadlock Deadlock oder Verklemmung bezeichnet in der Informatik einen Zustand, bei dem ein oder mehrere Prozesse auf Betriebsmittel warten, die dem Prozess selbst oder einem anderen beteiligten Prozess zugeteilt sind. Eine… …   Deutsch Wikipedia

  • Dining philosophers problem — Aufbau des Philosophenproblems Es handelt sich bei dem Philosophenproblem (engl. Dining Philosophers Problem) um ein Fallbeispiel aus dem Bereich der Theoretischen Informatik. Dabei soll das Problem der Nebenläufigkeit erklärt werden, und die… …   Deutsch Wikipedia

  • Edsger Dijkstra — E. W. Dijkstra, 2002 Edsger Wybe Dijkstra [ˈɛtˌsxər ˈdɛɪkˌstra] (* 11. Mai 1930 in Rotterdam; † 6. August 2002 in Nuenen, Niederlande) war ein niederländischer Informatiker. Er war der Wegbereiter der …   Deutsch Wikipedia

  • Edsger W. Dijkstra — E. W. Dijkstra, 2002 Edsger Wybe Dijkstra [ˈɛtˌsxər ˈdɛɪkˌstra] (* 11. Mai 1930 in Rotterdam; † 6. August 2002 in Nuenen, Niederlande) war ein niederländischer Informatiker. Er war der Wegbereiter der …   Deutsch Wikipedia

  • Gedankenspiel — Ein Gedankenexperiment (oder Gedankenversuch) ist ein gedankliches Hilfsmittel, um bestimmte Theorien zu untermauern, zu widerlegen, zu veranschaulichen oder weiter zu denken. Es wird dabei gedanklich eine Situation konstruiert, die real so nicht …   Deutsch Wikipedia

  • Gegenseitiger Ausschluss — Der Begriff Wechselseitiger Ausschluss bzw. Mutex (Abk. für engl. mutual exclusion, auf deutsch etwa wechselseitiger Ausschluss) bezeichnet eine Gruppe von Verfahren, mit denen das Problem des kritischen Abschnitts gelöst wird. Mutex Verfahren… …   Deutsch Wikipedia

  • Livelock — Beispiel für einen Deadlock Deadlock oder Verklemmung bezeichnet in der Informatik einen Zustand, bei dem ein oder mehrere Prozesse auf Betriebsmittel warten, die dem Prozess selbst oder einem anderen beteiligten Prozess zugeteilt sind. Eine… …   Deutsch Wikipedia

  • Nebenläufige Programmierung — Nebenläufigkeit liegt vor, wenn mehrere Ereignisse in keiner kausalen Beziehung zueinander stehen, sich also nicht beeinflussen. Ereignisse sind nebenläufig, wenn keines eine Ursache des anderen ist. Oder anders ausgedrückt: Aktionen können… …   Deutsch Wikipedia

  • Parallelisierbarkeit — Nebenläufigkeit liegt vor, wenn mehrere Ereignisse in keiner kausalen Beziehung zueinander stehen, sich also nicht beeinflussen. Ereignisse sind nebenläufig, wenn keines eine Ursache des anderen ist. Oder anders ausgedrückt: Aktionen können… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”